import type {
	InternalAxiosRequestConfig,
	AxiosResponse,
	AxiosRequestConfig,
	AxiosInstance,
	AxiosRequestHeaders,
	AxiosError,
} from "axios";

interface RequestInterceptors<T> {
	// 请求拦截
	requestInterceptors?: (config: InternalAxiosRequestConfig) => InternalAxiosRequestConfig;
	requestInterceptorsCatch?: (err: any) => any;
	// 响应拦截
	responseInterceptors?: (config: T) => T;
	responseInterceptorsCatch?: (err: any) => any;
}

interface RequestConfig<T = AxiosResponse> extends AxiosRequestConfig {
	interceptors?: RequestInterceptors<T>;
}

export {
	AxiosResponse,
	RequestInterceptors,
	RequestConfig,
	AxiosInstance,
	InternalAxiosRequestConfig,
	AxiosRequestHeaders,
	AxiosError,
};
